﻿#ifndef CPLCMAINWIDGET_H
#define CPLCMAINWIDGET_H

#include <QWidget>

#include "CPlcItemEditWidget.h"
#include "CPlcItemFindWidget.h"
#include "CPlcItemContact.h"
#include "CPlcItemSpace.h"
#include "CPlcItemLinkLine.h"
#include "CPlcItemCoil.h"
#include "CPlcItemBranch.h"
#include "CPlcScene.h"
#include "CPlcSceneView.h"

QT_BEGIN_NAMESPACE
namespace Ui
{
class CPlcMainWidget;
class CPlcCenterWidget;
}

QT_END_NAMESPACE


class CPlcMainWidget : public QWidget
{
    Q_OBJECT

public:
    CPlcMainWidget(QWidget *parent = NULL);
    ~CPlcMainWidget();

private slots:

    //周期刷新函数
    void loopRefresh();

    //监视
    void slotOnMonitor(bool value);
    //编译
    void slotOnCompile();
    //修改
    void slotOnEditItem();
    //编辑取消
    void slotOnEidtCancel();
    //编辑确认
    void slotOnEidtConfirm();
    //查找
    void slotOnFindItem();
    //查看和编辑页切换
    void slotOnCheckView();
    //撤销
    void slotOnUndo();
    //还原
    void slotOnRedo();

    //放大
    void slotOnZoomIn();
    //缩小
    void slotOnZoomOut();

    //设置注释可见性
    void slotSetCommentVisible(bool value);

    //常开按钮触发函数
    void slotOnOpenContact();
    //常闭按钮触发函数
    void slotOnCloseContact();
    //上升沿按钮触发函数
    void slotOnPulse();
    //下降沿按钮触发函数
    void slotOnFalling();
    //线圈按钮触发函数
    void slotOnCoil();
    //置位线圈按钮触发函数
    void slotOnSet();
    //复位线圈按钮触发函数
    void slotOnReset();
    //功能块按钮触发函数
    void slotOnFunctionBlock();
    //分支按钮触发函数
    void slotOnBranchDown();
    //连接线按钮触发函数
    void slotOnLinkLine();
    //删除分支按钮触发函数
    void slotRemoveBranchDown();
    //插入一行按钮触发函数
    void slotInseretRow();
    //删除一行按钮触发函数
    void slotDeleteRow();
    //插入元件按钮触发函数
    void slotInseretItem();
    //删除元件按钮触发函数
    void slotDeleteItem();

private:
    //测试用初始化界面
    void initUi();

private:
    Ui::CPlcMainWidget *ui;
    CPlcItemEditWidget *editWidget;
    CPlcItemFindWidget *findWidget;

    CPlcScene mScene;
};
#endif   // CPLCMAINWIDGET_H
